//
//  QMAErrorDefine.h
//  MiniAppSDK
//
//  Created by ashezhang on 2019/7/3.
//

#pragma mark 需遵循格式
/*  自动生成 localizedDescription 需要遵循的格式：
 *      1. 创建 Domain 必须为 FOUNDATION_EXPORT NSErrorDomain const;
 *      2. 创建 Code 必须以 NS_ERROR_ENUM(xxx){}; 包裹;
 *      3. Code 枚举值需以 xxx 去除 Domian 后的字符串为前缀;
 *      4. 需生成的 NSError localizedDescription 需要在相应的 Code 的枚举值上面以 // 开启注释。
 */

#ifndef QMAErrorDefine_h
#define QMAErrorDefine_h
#import "NSError+MiniAppSDK.h"

#define QMALocalError(errorDomian, errorCode)  ([NSError qmaErrorWithDomain:errorDomian code:errorCode userInfo:nil])

FOUNDATION_EXPORT NSErrorDomain const QMAMiniAppErrorDomain;
NS_ERROR_ENUM(QMAMiniAppErrorDomain)
{
    // 网络不可达
    QMAMiniAppErrorNotReachable                   = -1001,
    // delegate没有实现
    QMAMiniAppErrorNotImplemented                 = -1002,
    
    // 小程序基础库下载失败
    QMAMiniAppErrorJSSDKDownloadFail              = -2001,
    // 小程序基础库解压失败
    QMAMiniAppErrorJSSDKUnzipFail                 = -2002,
    // 小程序基础库需要升级
    QMAMiniAppErrorJSSDKNeedUpgrade               = -2003,
    // 小程序基础库验证失败
    QMAMiniAppErrorJSSDKVerifyFail                = -2004,
    QMAMiniAppErrorCheckOCSFail                   = -2005,
    // 视频通话中无法进入小游戏
    QMAMiniAppErrorVideoChatting                  = -2006,
    // 小程序OCS下载失败
    QQMAMiniAppErrorOCSDownloadFail               = -2007,
    // 小程序OCS解压失败
    QMAMiniAppErrorOCSUnzipFail                   = -2008,
    
    QMAMiniAppErrorParamInvalid                   = -2009,
    // 下载小程序apkg包的网络响应无效
    QMAMiniAppErrorResponseInvalid                = -2010,
    // unPack小程序Apkg包失败
    QMAMiniAppErrorUnpackApkgFail                 = -2011,
    QMAMiniAppErrorConsistencyInvalid             = -2012,
    QMAMiniAppErrorHTTPStatusInvalid              = -2013,
    // 小程序Apkg包下载存储路径错误
    QMAMiniAppErrorCreatePathFail                 = -2014,
    // 验证小程序Apkg包失败
    QMAMiniAppErrorValidateFileFail               = -2015,
    
    // 设备硬件不支持小程序
    QMAMiniAppErrorDeviceNotSupport               = -2016,
    // 设备系统不支持小程序
    QMAMiniAppErrorSystemNotSupport               = -2017,
    // 启动小程序的AppInfo错误
    QMAMiniAppErrorAppInfoError                   = -2018,
    // 小程序已经在显示中
    QMAMiniAppErrorMiniAppIsShowing               = -2019,
    // 小程序视图是无效视图
    QMAMiniAppErrorParentVCInvalid                = -2020,
    // 启动小程序的 Application 错误
    QMAMiniAppErrorApplicationError               = -2021,
    // 启动小程序的代理没有实现
    QMAMiniAppErrorDelegateError                  = -2022,
    QMAMiniAppErrorNilApplication                 = -2023,
    QMAMiniAppErrorUserNotLoggedIn                = -2024,
    QMAMiniAppErrorFlutterResourceInvalid         = -2025,
    // 平台(Mac Catalyst)不支持小游戏
    QMAMiniAppErrorNotSupportMiniGame             = -2026,
    // 小程序读取资源文件发生异常(如小游戏读取不到game.json)
    QMAMiniAppErrorReadPackageFail                = -2027,
    // 特殊场景下接收到对战邀请，需要block启动避免影响用户体验（比如在玩另一个小游戏的时候）
    QMAMiniAppErrorBlockStartupInSomeScenario     = -2028,
    // 被应用主动拦截禁止进入
    QMAMiniAppErrorBannedInApp                    = -2100,
    // 被应用主动拦截,青少年模式下，不让打开
    QMAMiniAppErrorBannedInChildMode              = -2101,
    
    /** MAWebView 的白屏错误 */
    QMAMiniAppErrorWebViewNoCompositingView       = -3001,
    /*MABlankWebViewErrorCodeBodyInnerHTMLNil = -2, 已被弃用，8.1.5之前的版本依旧使用 */
    QMAMiniAppErrorWebViewJSError                 = -3002,
    QMAMiniAppErrorWebViewDidTerminate            = -3003,
    QMAMiniAppErrorWebViewScriptAgainError        = -3004,
    
    QMAMiniAppErrorWebViewPageNotFound            = -3005,
    QMAMiniAppErrorWebViewApplicationNotFound     = -3006,
    
    QMAMiniAppErrorHotlaunchParamInvalid          = -3007,
    QMAMiniAppErrorWebViewRenderBlank             = -3008,
    // 与当前手Q正在运行的业务冲突
    QMAMiniAppErrorBusinessConflict               = -3009,
};


// TODO: 不是小程序内部的东西，后续移除出去
FOUNDATION_EXPORT NSErrorDomain const QMAGroupAlbumErrorDomain;
NS_ERROR_ENUM(QMAGroupAlbumErrorDomain)
{
    // Invalid GroupId
    QMAGroupAlbumErrorGroupIdInvalid      = -10,
    // Invalid pick type
    QMAGroupAlbumErrorPickTypeInvalid     = -11,
    // Invalid parameter
    QMAGroupAlbumErrorParamInvalid        = -12,
    // sendbox is empty
    QMAGroupAlbumErrorSendBoxEmpty        = -13,
    // data of params is empty
    QMAGroupAlbumErrorNoData              = -14,
};

// https://qqlogin.woa.com/sigvalidate.html 票据验证服务
FOUNDATION_EXPORT NSErrorDomain const QMALoginServiceErrorDomain;
NS_ERROR_ENUM(QMALoginServiceErrorDomain)
{
    QMALoginServiceErrorPSkeyInvaild = 400112, // 从ptlogin返回的错误码是112，频道做了一层转换为4003，这里统一定义标准为400112（业务应该用这个错误码）
    QMALoginServiceErrorGProPSkeyInvaild = 4003 // 仅作为兼容处理
};

#endif /* QMAErrorDefine_h */
